package unit02;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.DoubleSupplier;

/**
 * @author wangzhuangzhuang
 * @DESC: Supplier接口非常简单，不包含任何静态或默认方法，只有一个抽象方法 T get()
 * @date 2022-05-08 22:11
 */
public class SupplierDemo {
	public static void main(String[] args) {
//		// No1. 匿名内部类实现
//		DoubleSupplier randomSupplier = new DoubleSupplier() {
//			@Override
//			public double getAsDouble(){
//				return Math.random();
//			}
//		};
//
//		// No2. Lambda表达式实现
//		randomSupplier = () -> Math.random();
//
//		// No3. 方法引用实现
//		randomSupplier = Math::random;
//
//		System.out.println(randomSupplier.getAsDouble()); // 0.4261639361377553
//		System.out.println(Math.random());
		findNameFromList();
	}

	public static void findNameFromList(){
		List<String> names = new ArrayList<>(Arrays.asList("Mal", "Wash", "Kaylee", "Inara", "Zoe", "Jayne", "Simon"));
		Optional<String> first = names.stream()
				.filter(e -> e.startsWith("C"))
				.findFirst();
		System.out.println(first); // 打印Optional.empty
		System.out.println(first.get()); // 如果没有元素匹配则报错： java.util.NoSuchElementException No value present
		System.out.println(first.orElse("尚无匹配元素！")); // ★
	}
}